#ifndef COORDINATEY_H_
#define COORDINATEY_H_

#include <vector>

#include "VerticalCardinal.h"

namespace catan
{

class CoordinateY
{
public:
	enum Enum_CoordinateY { Y0 = 0, Y1 = 1, Y2 = 2, Y3 = 3, Y4 = 4, Y5 = 5, Y6 = 6 };

	static const std::vector<Enum_CoordinateY> &getVectorOfPossibleEnumValues();
	static bool canInit(Enum_CoordinateY enumY);
	
	explicit CoordinateY(Enum_CoordinateY enumY);
	Enum_CoordinateY getEnum() const;
	bool canCreateNeighbor(VerticalCardinal verticalCardinal) const;
	CoordinateY createNeighbor(VerticalCardinal verticalCardinal) const;
	bool operator==(const CoordinateY &other) const;
	bool operator<(const CoordinateY &other) const;
	CoordinateY& operator=(const CoordinateY& other);

private:
	static std::vector<Enum_CoordinateY> vectorOfPossibleEnumValues;
	
	Enum_CoordinateY enumY;
};

static CoordinateY y0(CoordinateY::Y0), y1(CoordinateY::Y1), y2(CoordinateY::Y2), y3(CoordinateY::Y3), y4(CoordinateY::Y4), y5(CoordinateY::Y5), y6(CoordinateY::Y6);

}

#endif /*COORDINATEY_H_*/
